package com.xiaoxx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaoxx.model.dto.sys.*;
import com.xiaoxx.model.entity.sys.SysUser;
import com.xiaoxx.model.vo.sys.SysUserListVo;
import com.xiaoxx.model.vo.sys.SysUserLoginVo;
import com.xiaoxx.model.vo.sys.SysUserTreeListVo;
import com.xiaoxx.model.vo.sys.SysUserVo;

import java.util.List;
import java.util.Map;

/**
 * @author :HX
 * @date : 2023/7/19
 */
public interface SysUserService extends IService<SysUser> {
    /**
     * 注册用户
     *
     * @param userRegisterDto
     * @return
     */
    Boolean register(UserRegisterDto userRegisterDto);

    /**
     * 用户登录
     *
     * @param userLogin
     * @return
     */
    SysUserLoginVo login(UserLoginDto userLogin);

    /**
     * 用户列表
     *
     * @param query
     * @return
     */
    IPage<SysUserListVo> listUser(SysUserQuery query);

    /**
     * 后台新增用户
     *
     * @param dto
     * @return
     */
    Boolean add(SysUserDto dto);


    /**
     * 修改
     *
     * @param dto
     * @return
     */
    Boolean upd(SysUserDto dto);

    /**
     * 启用/禁用
     *
     * @param id
     * @param disable
     * @return
     */
    Boolean updDisable(String id, Integer disable);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    Boolean del(String id);

    /**
     * id查询
     *
     * @param id
     * @return
     */
    SysUserVo findById(String id);


    List<SysUserTreeListVo> findUserTree();


    String getIpInfo();


    SysUserVo getUserInfo();

    Boolean updPassword(SysUserPasswordDto dto);

    Map<String, String> getCode();

    String getGiteeUrl(String type);

    String callback(String code);

    SysUserLoginVo loginByToken(Integer type);

    Boolean loginOut();

    String userCallback(String code);
}
